// 配置文件
import { fileURLToPath, URL } from 'node:url';

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
// 引入自动生成路由
import Pages from 'vite-plugin-pages';
// 引入自动引入Hook
import AutoImport from 'unplugin-auto-import/vite';
// 引入模板布局
import Layouts from 'vite-plugin-vue-layouts-next';
// 引入自动引入组件
import Components from 'unplugin-vue-components/vite';
// 引入路由规则
import * as rules from './src/routers/rules';

// https://vite.dev/config/
export default defineConfig({
  // 插件
  plugins: [
    // vue
    vue(),
    // 自动生成路由插件
    Pages({
      dirs: 'src/views', // 需要生成路由的组件目录
      exclude: ['**/components/*.vue'], // 排除在外的目录，即所有 components 目录下的 .vue 文件都不会生成路由
      // 路由拓展判断
      extendRoute(route, parent) {
        // 追加属性
        route = {
          ...route,
          meta: {
            layout: 'index',
            IsLogin: true
          },
        }
        // 不需要底部导航
        if (rules.NoNeedTabbar.includes(route.path)) {
          // 关闭模板布局属性
          route.meta.layout = false;
        }
        // 不需要登录
        if (rules.NoNeedLogin.includes(route.path)) {
          // 关闭是否登录属性
          route.meta.IsLogin = false;
        }
        return route;
      }
    }),
    // 自动引入Hook插件
    AutoImport({
      // 指定引入哪些插件
      imports: [
        'vue', // vue插件（必须）
        'vue-router', // 路由插件
        'pinia', // 状态管理器
        {
          'lodash': ['debounce'] // lodash库的debouch函数（防抖）
        }
      ],
      // 生成全局自动引入配置文件
      dts: "./src/auto-imports.d.ts",
    }),
    // 模板布局插件
    Layouts({
      layoutsDirs: 'src/layouts', // 布局模板文件存放目录
      defaultLayout: 'Index', // 默认布局文件是Index.vue，对应 src/layout/index.vue
      pagesDirs: 'src/views',// 页面存放目录
    }),
    // 自动引入组件
    Components({
      // 组件存放目录，默认是src/components
      dirs: ['src/components'],
      // ui库解析器
      // resolvers: [ElementPlusResolver()],
      extensions: ['vue'], // 仅处理.vue文件
    })
  ],
  // 系统的别名 vite官网可以查看
  resolve: {
    alias: {
      // 配置了一个绝对路径，用@指向了src目录
      '@': fileURLToPath(new URL('./src', import.meta.url)),
    },
  },
  // 服务器的配置（后台接口）
  server: {
    // 反向代理
    proxy: {
      '/shop': {
        // target: 'http://www.fastadmin.com:8080/shop',// 反向代理的目标地址（接口地址）本地
        target: 'https://www.hurrinz.fastadmin.thecuriouscat.site/shop',// 反向代理的目标地址（接口地址）服务器
        changeOrigin: true, // 允许跨域
        // 替换掉shop前缀 防止多个shop地址
        rewrite: (path) => path.replace(/^\/shop/, ''),
      },
    }
  },
});
